import pathlib
from datetime import datetime


ACTVHH_DIR = r"C:\Users\sherry\Desktop\ODMS测试数据\test.txt"

DELIMITER = '|'
# # 货币字典
# CurrencyDictionary={
#     '000':"CNY-人民币",
#     '001':"CNY-人民币",
#     '011':'CNY-外汇人民币',
#     '002':'AUA-国内四九金',
#     '003':'AUB-国内三九五金',
#     '010':'BDT-孟加拉国塔卡',
#     '012':'GBP-英镑',
#     '013':'HKD-港币',
#     '014':'USD-美元',
#     '015':'CHF-瑞士法郎',
#     '016':'DEM-德国马克',
#     '017':'FRF-法国法郎',
#     '018':'SGD-新加坡元',
#     '019':'PKR-巴基斯坦卢比',
#     '020':'NLG-荷兰盾',
#     '021':'SEK-瑞典克郎',
#     '022':'DKK-丹麦克郎',
#     '023':'NOK-挪威克郎',
#     '027':'JPY-日元',
#     '028':'CAD-加元',
#     '029':'AUD-澳元',
#     '030':'TZS-坦桑尼亚先令',
#     '031':'ESP-西班牙比塞塔',
#     '032':'MYR-马来西亚林吉特',
#     '033':'XEU-欧洲货币单位',
#     '034':'XAU-黄金',
#     '035':'GLD-本币金',
#     '036':'XAG-白银',
#     '037':'XDR-特别提款权',
#     '038':'EUR-欧元',
#     '040':'LKR-斯里兰卡卢比',
#     '041':'DZD-阿尔及利亚第纳尔',
#     '042':'FIM-芬兰马克',
#     '044':'IQD-伊拉克地那尔',
#     '046':'MAD-摩洛哥地拉姆',
#     '047':'SLL-塞拉利昂',
#     '048':'IRR-伊朗里亚尔',
#     '049':'NPR-尼泊尔卢比',
#     '060':'CNY-记帐人民币',
#     '061':'ALL-阿尔巴尼亚列克',
#     '063':'KPW-朝鲜币',
#     '064':'VND-越南盾',
#     '066':'BGL-保加利亚列瓦',
#     '070':'ZAR-南非兰特',
#     '071':'LYD-利比亚第纳尔',
#     '080':'ZMK-赞比亚克瓦查',
#     '081':'MOP-澳门币',
#     '082':'PHP-菲律宾比索',
#     '084':'THB-泰币',
#     '085':'INR-印度罗比',
#     '087':'NZD-新西兰元',
#     '088':'KRM-韩圆',
#     '089':'SYP-叙利亚镑',
#     '094':'USD-记账美元',
#     '095':'CHF-记帐瑞士法郎',
#     '240':'ROL-罗马尼亚列依',
#     '601':'GHC-加纳塞地'
# }

bank_map={'2465': '中国银行黑龙江省分行',
 '2021': '中国银行吉林省分行汽车厂支行',
 '2118': '中国银行吉林省分行上海路支行',
 '2289': '中国银行吉林省分行西安大路支行',
 '2023': '中国银行吉林省分行开发区支行', '2024': '中国银行吉林省分行建设街支行',
 '2129': '中国银行吉林省分行工农大路支行', '2128': '中国银行吉林省分行大经路支行',
 '2295': '中国银行吉林省分行吉林大路支行', '2120': '中国银行吉林省分行朝阳支行',
 '2294': '中国银行吉林省分行榆树支行', '2015': '中国银行吉林省分行九台支行',
 '2019': '中国银行吉林省分行德惠支行', '2214': '中国银行吉林市分行',
 '2288': '中国银行吉林船营支行', '2287': '中国银行吉林龙潭支行', '2028': '中国银行吉林昌邑支行',
 '2296': '中国银行吉林市分行蛟河支行', '2202': '中国银行延边州分行',
 '2286': '中国银行延边州分行敦化支行', '2009': '中国银行延边州分行安图支行',
 '2016': '中国银行延边州分行珲春支行', '2012': '中国银行延边州分行图门支行',
 '2010': '中国银行延边州分行龙井支行', '2104': '中国银行四平市分行',
 '2109': '中国银行四平市分行英城支行', '2108': '中国银行四平市分行铁东支行',
 '2290': '中国银行四平市分行公主岭支行', '2161': '中国银行通化市分行',
 '2292': '中国银行通化市分行梅河口支行', '2291': '中国银行通化市分行集安支行',
 '2011': '中国银行通化市分行辉南支行', '2201': '中国银行白城市分行',
 '2014': '中国银行白城市分行大安支行', '2160': '中国银行辽源市分行',
 '2027': '中国银行东吉支行', '2298': '中国银行辽源市分行桥西支行',
 '2299': '中国银行辽源市分行东丰支行', '2284': '中国银行松原市分行',
 '2022': '中国银行松原市分行油田支行', '2020': '中国银行松原市分行宁江支行',
 '2285': '中国银行白山市分行', '2293': '中国银行白山市分行抚松支行',
 '2112': '中国银行吉林省分行新民大街支行', '2208': '中国银行吉林省分行',
 '2545': '中国银行佳木斯市顺和支行', '2540': '中国银行佳木斯市保卫支行',
 '2541': '中国银行佳木斯市建设支行',
 '2326': '中国银行黑河市开发区支行', '2310': '中国银行绥化市西城区支行',
 '2311': '中国银行鹤岗市站前支行', '2321': '中国银行双鸭山市四马路支行',
 '2312': '中国银行大兴安岭地区加格达奇支行', '2316': '中国银行七台河市新兴支行',
 '2303': '中国银行伊春市南岔支行', '2502': '中国银行齐齐哈尔市分行',
 '2501': '中国银行牡丹江市分行', '2503': '中国银行佳木斯市分行',
 '2530': '中国银行大庆市分行', '2516': '中国银行黑河市分行',
 '2519': '中国银行绥化市分行', '2518': '中国银行鸡西市分行',
 '2515': '中国银行鹤岗市支行', '2520': '中国银行双鸭山市分行',
 '2544': '中国银行大兴安岭地区分行', '2521': '中国银行七台河市分行',
 '2513': '中国银行双城支行', '2534': '中国银行尚志支行',
 '2546': '中行五常支行', '2319': '中国银行巴彦支行', '2341': '中国银行哈尔滨市霁虹支行',
 '2542': '中国银行克山支行', '2535': '中国银行依安支行', '2307': '中国银行龙江支行',
 '2552': '中国银行讷河支行', '2522': '中国银行绥芬河支行',
 '2300': '中国银行海林支行', '2309': '中国银行穆棱支行',
 '2538': '中国银行宁安支行', '2550': '中国银行东宁支行',
 '2548': '中国银行富锦支行', '2523': '中国银行同江支行',
 '2511': '中国银行阿城支行', '2554': '中国银行呼兰支行',
 '2517': '中国银行北安支行', '2302': '中国银行嫩江支行',
 '2557': '中国银行海伦支行', '2527': '中国银行安达支行',
 '2539': '中国银行肇东支行', '2525': '中国银行密山支行',
 '2524': '中国银行虎林支行', '2543': '中国银行勃利支行',
 '2514': '中国银行伊春市分行',
 '2510': '中国银行哈尔滨市兆麟支行',
 '2547': '中国银行哈尔滨市南岗支行',
 '2512': '中行道里支行', '2526': '中国银行哈尔滨市道外支行',
 '2332': '中国银行哈尔滨市动力支行', '2322': '中国银行哈尔滨市开发区支行',
 '2334': '中国银行哈尔滨市平房支行', '2301': '中国银行大庆市开发区支行',
 '2533': '中国银行大庆市卧里屯支行', '2323': '中国银行大庆市红岗支行', '2531': '中国银行大庆市高台子支行', '2330': '中国银行大庆市朝阳沟支行', '2529': '中国银行大庆市林源支行', '2532': '中国银行大庆市创业庄支行', '2555': '中国银行大庆市东风路支行', '2345': '中国银行大庆油田支行', '2528': '中国银行齐齐哈尔市富拉尔基支行', '2320': '中国银行齐齐哈尔市永兴支行', '2537': '中国银行牡丹江市裕民支行', '2553': '中国银行牡丹江市光华支行', '1405': '内蒙分行', '1594': '新华支行', '1314': '新城支行', '1598': '中国银行内蒙分行车站支行', '1307': '中国银行内蒙分行中山支行', '1599': '中国银行内蒙分行玉泉支行', '1316': '中国银行内蒙分行八拜支行',
 '1581': '中国银行赤峰分行', '1310': '中国银行元宝山支行', '1305': '中国银行宁城支行',
 '1311': '中国银行巴林左旗支行',
 '1582': '中国银行集宁分行', '1301': '中国银行丰镇支行', '1583': '中国银行包头分行',
 '1595': '中国银行东河支行',
 '1596': '中国银行青山支行', '1317': '中国银行昆区支行',
 '1318': '中国银行九原支行', '1584': '中国银行海拉尔分行',
 '1586': '中国银行通辽分行', '1587': '中国银行鄂尔多斯分行', '1309': '中国银行达拉特支行', '1588': '中国银行乌兰浩特分行', '1589': '中国银行二连浩特分行', '1590': '中国银行乌海分行', '1315': '中国银行乌达支行', '1591': '中国银行巴彦浩特分行', '1306': '中国银行吉兰泰分理处', '1592': '中国银行临河分行', '1308': '中国银行乌拉特前旗支行', '1593': '中国银行锡林浩特分行', '1585': '中国银行满洲里分行', '1041': '中国银行山西省分行', '1049': '中国银行太原市鼓楼支行',
 '1075': '中国银行太原市漪汾支行', '1134': '中国银行太原市平阳支行', '1073': '中国银行太原市并州支行', '1099': '中国银行太原市滨河支行', '1022': '中国银行太原市古交支行', '1013': '中国银行太原市清徐支行', '1169': '中国银行大同市分行', '1009': '中国银行大同市分行左云支行', '1017': '中国银行大同市分行矿务局支行', '1167': '中国银行朔州市分行', '1088': '中国银行朔州市平朔支行', '1042': '中国银行朔州市朔城区支行', '1298': '中国银行朔州市平鲁区支行', '1008': '中国银行山阴县支行', '1016': '中国银行朔州市怀仁县支行', '1299': '中国银行朔州市应县支行', '1284': '中国银行忻州分行', '1289': '中国银行原平市支行', '1294': '中国银行五台县支行', '1006': '中国银行定襄县支行', '1285': '中国银行晋中市分行', '1068': '中国银行晋中市分行灵石办事处', '1059': '晋中市分行介休支行',
 '1290': '中国银行晋中市分行太谷支行',
 '1021': '中国银行晋中市分行祁县支行', '1095': '中国银行晋中市分行榆社支行',
 '1283': '中国银行运城分行', '1043': '中国银行闻喜县支行',
 '1011': '中国银行永济市支行', '1054': '中国银行河津市支行',
 '1069': '河津支行禹门支行', '1282': '中国银行临汾分行',
 '1291': '中国银行侯马市支行', '1057': '中国银行洪洞县支行',
 '1024': '中国银行霍州市支行', '1286': '中国银行阳泉市分行',
 '1293': '中国银行平定县支行', '1044': '中国银行盂县支行',
 '1287': '中国银行晋城市分行', '1048': '中国银行阳城县支行',
 '1055': '中国银行高平市支行', '1023': '中国银行沁水县支行',
 '1288': '中国银行离石分行', '1047': '中国银行交城县支行',
 '1015': '中国银行汾阳县支行', '1010': '中国银行孝义市支行',
 '1281': '中国银行长治市分行', '1012': '中国银行长治市分行潞城市支行',
 '1058': '中国银行长治市分行沁县支行', '1046': '中国银行长治市分行黎城县支行',
 '1025': '中国银行长治市分行襄垣县支行', '1096': '中国银行长治市分行长治县分理处',
 '2111': '中国银行吉林丰满支行'}

# 货币字典
CurrencyDictionary={
    '000':"CNY",
    '001':"CNY",
    '011':'CNY',
    '002':'AUA',
    '003':'AUB',
    '010':'BDT',
    '012':'GBP',
    '013':'HKD',
    '014':'USD',
    '015':'CHF',
    '016':'DEM',
    '017':'FRF',
    '018':'SGD',
    '019':'PKR',
    '020':'NLG',
    '021':'SEK',
    '022':'DKK',
    '023':'NOK',
    '027':'JPY',
    '028':'CAD',
    '029':'AUD',
    '030':'TZS',
    '031':'ESP',
    '032':'MYR',
    '033':'XEU',
    '034':'XAU',
    '035':'GLD',
    '036':'XAG',
    '037':'XDR',
    '038':'EUR',
    '040':'LKR',
    '041':'DZD',
    '042':'FIM',
    '044':'IQD',
    '046':'MAD',
    '047':'SLL',
    '048':'IRR',
    '049':'NPR',
    '060':'CNY',
    '061':'ALL',
    '063':'KPW',
    '064':'VND',
    '066':'BGL',
    '070':'ZAR',
    '071':'LYD',
    '080':'ZMK',
    '081':'MOP',
    '082':'PHP',
    '084':'THB',
    '085':'INR',
    '087':'NZD',
    '088':'KRM',
    '089':'SYP',
    '094':'USD',
    '095':'CHF',
    '240':'ROL',
    '601':'GHC'
}

# Dictionary_Provinces = {
#     '00009':'黑龙江省',
#     '00008':'吉林省',
#     '00006':'内蒙古自治区',
#     '00005':'山西省'
# }


# org_dict = {'40142': '华北，北京市分行',
#             '40202': '华北，天津市分行',
#             '40303': '华东，上海市分行',
#             '40600': '西南，西藏区分行',
#             '40740': '华北，河北省分行',
#             '41041': '华北，山西省分行',
#             '41405': '华北，内蒙古省分行',
#             '41785': '华北，辽宁省分行',
#             '41852': '华北，沈阳分行',
#             '42208': '华北，吉林省分行',
#             '42465': '华北，黑龙江省分行',
#             '43016': '西北，陕西省分行',
#             '43251': '西北，甘肃省分行',
#             '43347': '西北，宁夏省分行',
#             '43469': '西北，青海省分行',
#             '43600': '西北，新疆区分行',
#             '43801': '华北，济南分行',
#             '43810': '华北，山东省分行',
#             '44433': '华东，江苏省分行',
#             '44445': '华东，苏州分行',
#             '44899': '华东，安徽省分行',
#             '45129': '华东，浙江省分行',
#             '45143': '华东，宁波分行',
#             '45481': '华东，福建省分行',
#             '45482': '华东，厦门分行',
#             '46243': '华北，河南省分行',
#             '46405': '华南，湖北省分行',
#             '46955': '华南，湖南省分行',
#             '47370': '华东，江西省分行',
#             '47501': '华南，广州分行',
#             '47502': '华南，江门分行', '47504': '华南，广东分行',
#             '47663': '华南，佛山分行', '47669': '华南，深圳分行',
#             '47806': '华南，海南省分行', '48051': '华南，广西壮族自治区分行',
#             '48631': '西南，四川省分行', '48642': '西南，重庆市分行',
#             '48882': '西南，贵州省分行', '49146': '西南，云南省分行'}

org_dict = {'1598': '中国银行内蒙分行车站支行',
            '1307': '中国银行内蒙分行中山支行',
              '1599': '中国银行内蒙分行玉泉支行', '1316': '中国银行内蒙分行八拜支行',
              '1581': '中国银行赤峰分行', '1310': '中国银行元宝山支行',
              '1305': '中国银行宁城支行', '1311': '中国银行巴林左旗支行',
              '1582': '中国银行集宁分行', '1301': '中国银行丰镇支行',
              '1583': '中国银行包头分行', '1595': '中国银行东河支行',
              '1596': '中国银行青山支行', '1317': '中国银行昆区支行',
              '1318': '中国银行九原支行', '1584': '中国银行海拉尔分行',
              '1586': '中国银行通辽分行', '1587': '中国银行鄂尔多斯分行',
              '1309': '中国银行达拉特支行', '1588': '中国银行乌兰浩特分行',
              '1589': '中国银行二连浩特分行', '1590': '中国银行乌海分行',
              '1315': '中国银行乌达支行', '1591': '中国银行巴彦浩特分行',
              '1306': '中国银行吉兰泰分理处', '1592': '中国银行临河分行',
              '1308': '中国银行乌拉特前旗支行', '1593': '中国银行锡林浩特分行',
              '1585': '中国银行满洲里分行', '1041': '中国银行山西省分行',
              '1049': '中国银行太原市鼓楼支行', '1075': '中国银行太原市漪汾支行',
              '1134': '中国银行太原市平阳支行', '1073': '中国银行太原市并州支行',
              '1099': '中国银行太原市滨河支行', '1022': '中国银行太原市古交支行',
              '1013': '中国银行太原市清徐支行', '1169': '中国银行大同市分行',
              '1009': '中国银行大同市分行左云支行', '1017': '中国银行大同市分行矿务局支行',
              '1167': '中国银行朔州市分行', '1088': '中国银行朔州市平朔支行',
              '1042': '中国银行朔州市朔城区支行', '1298': '中国银行朔州市平鲁区支行',
              '1008': '中国银行山阴县支行', '1016': '中国银行朔州市怀仁县支行',
              '1299': '中国银行朔州市应县支行', '1284': '中国银行忻州分行',
              '1289': '中国银行原平市支行', '1294': '中国银行五台县支行',
              '1006': '中国银行定襄县支行', '1285': '中国银行晋中市分行',
              '1068': '中国银行晋中市分行灵石支行', '1059': '晋中市分行介休支行',
              '1290': '中国银行晋中市分行太谷支行', '1021': '中国银行晋中市分行祁县支行',
              '1095': '中国银行晋中市分行榆社支行', '1283': '中国银行运城分行',
              '1043': '中国银行闻喜县支行', '1011': '中国银行永济市支行',
              '1054': '中国银行河津市支行', '1069': '河津市禹门支行',
              '1282': '中国银行临汾分行', '1291': '中国银行侯马市支行',
              '1057': '中国银行洪洞县支行', '1024': '中国银行霍州市支行',
              '1286': '中国银行阳泉市分行', '1293': '中国银行平定县支行',
              '1044': '中国银行盂县支行', '1287': '中国银行晋城市分行',
              '1048': '中国银行阳城县支行', '1055': '中国银行高平市支行',
              '1023': '中国银行沁水县支行', '1288': '中国银行离石分行',
              '1047': '中国银行交城县支行', '1015': '中国银行汾阳县支行',
              '1010': '中国银行孝义市支行', '1281': '中国银行长治市分行',
              '1012': '中国银行长治市分行潞城市支行', '1058': '中国银行长治市分行沁县支行',
              '1046': '中国银行长治市分行黎城县支行', '1025': '中国银行长治市分行襄垣县支行',
              '1096': '中国银行长治市分行长治县支行', '2111': '中国银行吉林丰满支行',
              '2465': '中国银行黑龙江省分行', '2021': '中国银行吉林省分行汽车厂支行',
              '2118': '中国银行吉林省分行上海路支行', '2289': '中国银行吉林省分行西安大路支行',
              '2023': '中国银行吉林省分行开发区支行', '2024': '中国银行吉林省分行建设街支行',
              '2129': '中国银行吉林省分行工农大路支行', '2128': '中国银行长春南湖大路支行',
              '2295': '中国银行吉林省分行吉林大路支行', '2120': '中国银行吉林省分行朝阳支行',
              '2294': '中国银行吉林省分行榆树支行', '2015': '中国银行吉林省分行九台支行',
              '2019': '中国银行吉林省分行德惠支行', '2214': '中国银行吉林市分行',
              '2288': '中国银行吉林船营支行', '2287': '中国银行吉林龙潭支行',
              '2028': '中国银行吉林昌邑支行', '2296': '中国银行吉林市分行蛟河支行',
              '2202': '中国银行延边州分行', '2286': '中国银行延边州分行敦化支行',
              '2009': '中国银行延边州分行安图支行', '2016': '中国银行延边州分行珲春支行',
              '2012': '中国银行延边州分行图门支行', '2010': '中国银行延边州分行龙井支行',
              '2104': '中国银行四平市分行', '2109': '中国银行四平市分行英城支行',
              '2108': '中国银行四平市分行铁东支行', '2290': '中国银行四平市分行公主岭支行',
              '2161': '中国银行通化市分行', '2292': '中国银行通化市分行梅河口支行',
              '2291': '中国银行通化市分行集安支行', '2011': '中国银行通化市分行辉南支行',
              '2201': '中国银行白城市分行', '2014': '中国银行白城市分行大安支行',
              '2160': '中国银行辽源市分行', '2027': '中国银行东吉支行',
              '2298': '中国银行辽源市分行桥西支行', '2299': '中国银行辽源市分行东丰支行',
              '2284': '中国银行松原市分行', '2022': '中国银行松原市分行油田支行',
              '2020': '中国银行松原市分行宁江支行', '2285': '中国银行白山市分行',
              '2293': '中国银行白山市分行抚松支行', '2112': '中国银行吉林省分行新民大街支行',
              '2208': '中国银行吉林省分行', '2545': '中国银行佳木斯市顺和支行',
              '2540': '中国银行佳木斯市保卫支行', '2541': '中国银行佳木斯市建设支行',
              '2326': '中国银行黑河市开发区支行', '2310': '中国银行绥化市西城区支行',
              '2311': '中国银行鹤岗市站前支行', '2321': '中国银行双鸭山市四马路支行',
              '2312': '中国银行大兴安岭地区加格达奇支行', '2316': '中国银行七台河市新兴支行',
              '2303': '中国银行伊春市南岔支行', '2502': '中国银行齐齐哈尔市分行',
              '2501': '中国银行牡丹江市分行', '2503': '中国银行佳木斯市分行',
              '2530': '中国银行大庆市分行', '2516': '中国银行黑河市分行',
              '2519': '中国银行绥化市分行', '2518': '中国银行鸡西市分行',
              '2515': '中国银行鹤岗市支行', '2520': '中国银行双鸭山市分行',
              '2544': '中国银行大兴安岭地区分行', '2521': '中国银行七台河市分行',
              '2513': '中国银行双城支行', '2534': '中国银行尚志支行', '2546': '中行五常支行',
              '2319': '中国银行巴彦支行', '2341': '中国银行哈尔滨市霁虹支行',
              '2542': '中国银行克山支行', '2535': '中国银行依安支行', '2307': '中国银行龙江支行',
              '2552': '中国银行讷河支行', '2522': '中国银行绥芬河支行', '2300': '中国银行海林支行',
              '2309': '中国银行穆棱支行', '2538': '中国银行宁安支行', '2550': '中国银行东宁支行',
              '2548': '中国银行富锦支行', '2523': '中国银行同江支行', '2511': '中国银行阿城支行',
              '2554': '中国银行呼兰支行', '2517': '中国银行北安支行', '2302': '中国银行嫩江支行',
              '2557': '中国银行海伦支行', '2527': '中国银行安达支行', '2539': '中国银行肇东支行',
              '2525': '中国银行密山支行', '2524': '中国银行虎林支行', '2543': '中国银行勃利支行',
              '2514': '中国银行伊春市分行', '2510': '中国银行哈尔滨市兆麟支行',
              '2547': '中国银行哈尔滨市南岗支行', '2512': '中行道里支行',
              '2526': '中国银行哈尔滨市道外支行', '2332': '中国银行哈尔滨市动力支行',
              '2322': '中国银行哈尔滨市开发区支行', '2334': '中国银行哈尔滨市平房支行',
              '2301': '中国银行大庆市开发区支行', '2533': '中国银行大庆市卧里屯支行',
              '2323': '中国银行大庆市红岗支行', '2531': '中国银行大庆市高台子支行',
              '2330': '中国银行大庆市朝阳沟支行', '2529': '中国银行大庆市林源支行',
              '2532': '中国银行大庆市创业庄支行', '2555': '中国银行大庆市东风路支行',
              '2345': '中国银行大庆油田支行', '2528': '中国银行齐齐哈尔市富拉尔基支行',
              '2320': '中国银行齐齐哈尔市永兴支行', '2537': '中国银行牡丹江市裕民支行',
              '2553': '中国银行牡丹江市光华支行', '1405': '内蒙分行', '1594': '新华支行',
              '1314': '新城支行'}


wide_table = []

def actvhh_test():
    with open(ACTVHH_DIR , encoding='utf-8') as f:
        lines = f.readlines()
        for line in lines:
            actvhh = line.split('|')
            # print(actvhh)
            # 宽表记录 在这里做宽表映射、写文件、入库等
            wide_line = [""] * 140
            # 数据解析
            # 1 客户号 在ACTVHH表中第8个字段  CUSIDT
            wide_line[0] = '000000000'
            if actvhh[8]:
                wide_line[0] = actvhh[8]
            # print(wide_line[0])
            # 2 账号 使用ACTVHH表中ORGID3(7),CUSIDT(8),APCODE(9),CURCDE(10) 这四个字段拼接而成
            wide_line[1] = actvhh[7] + actvhh[8] + actvhh[9] + actvhh[10]
            account = wide_line[1]
            # 3 旧帐号 存取2 中的内容
            wide_line[2] = account
            # 4 账号类型
            wide_line[3] = "01"
            # 5 查询卡号
            wide_line[4] = '00000'
            # 6 卡类型
            wide_line[5] = '99'
            # 7 机构号  orgidt
            wide_line[6] = actvhh[1]
            # print(wide_line[6])
            # print(org_dict.get(wide_line[6]))
            # 8 交易类型
            # 9 借贷标记  txnamt
            if float(actvhh[11].strip()) <= 0:
                wide_line[8] = 'D'
            else:
                wide_line[8] = 'C'
            # 10 币种 curcde
            wide_line[9] = CurrencyDictionary.get(actvhh[10], 'XXX')
            # 11 交易金额
            wide_line[10] = f"{abs(round(float(actvhh[11]), 2)):.2f}"
            # 12 交易余额
            wide_line[11] = f"{round(float(actvhh[12]), 2):.2f}"
            # 设计个宽表大小5G输出文件，生成最终项目文件
            # 13 交易时间
            vchdat = actvhh[28]  # 日期串  yyyy-mm-dd
            vchtim = actvhh[29]  # 时间串  hh:mi:ss 或 BATCH/None
            # 1. 日期统一转成 yyyyMMdd
            # date_part = datetime.strptime(vchdat, "%Y-%m-%d").strftime("%Y%m%d")
            date_part = datetime.strptime(vchdat[:8], "%Y%m%d").strftime("%Y%m%d")
            # 2. 时间部分处理
            if vchtim is None or vchtim.upper() == 'BATCH':
                time_part = '000000'
            else:
                time_part = vchtim.replace(':', '')  # hh:mi:ss -> hhmiss
            # 3. 拼接
            wide_line[12] = date_part + time_part  # yyyyMMddhhmiss
            # print(wide_line[12])
            # 22 交易摘要 furinf
            wide_line[21] = actvhh[15]
            # 23 -- 交易网点名称-二级-尽可能恢复 txnbank ==  actorg
            wide_line[22] = bank_map.get(actvhh[23], '')
            # 24 -- 日志号-二级-尽可能恢复 VCHSET
            wide_line[23] = actvhh[3]
            # 35 -- 交易柜员号-二级-尽可能恢复 TLRNUM
            wide_line[34] = actvhh[2]
            # 37 -- 本方账号-二级-尽可能恢复vhh.orgid3,vhh.cusidt,vhh.apcode,vhh.curcde
            wide_line[36] = actvhh[7] + actvhh[8] + actvhh[9] + actvhh[10]
            # 46 -- 定存起始日期-三级-可为空 valdat
            val = actvhh[13]
            if val is None or (isinstance(val, str) and val.strip().upper() == 'NULL') or val == '':
                wide_line[45] = ""  # 或 ''，根据你的需求
            else:
                try:
                    # 尝试解析日期时间字符串
                    dt = datetime.strptime(val.strip(), '%Y-%m-%d %H:%M:%S')
                    wide_line[45] = dt.strftime('%Y-%m-%d')  # 转为 'YYYY-MM-DD'
                except (ValueError, AttributeError, TypeError):
                    # 如果格式不对或不是字符串，保留原样或设为 None
                    wide_line[45] = ""
            # 86 -- 输入当天套顺序号 vchset
            wide_line[85] = actvhh[3]
            # print(wide_line[85])
            # 87 -- 输入当天套内顺序号 setseq
            wide_line[86] = actvhh[4]
            # 88 -- 记帐日 erydat
            wide_line[87] = actvhh[5]
            # 90 -- 建卡销卡凭证编号 regnum
            wide_line[89] = actvhh[22]
            # 91-- 传票输入方式 erytyp
            wide_line[90] = actvhh[27]
            # 117 交易本方核算码 apcode
            wide_line[116] = actvhh[9]
            # 118 -- 交易本方货币码-三级-可为空  curcde
            wide_line[117] = CurrencyDictionary.get(actvhh[10], 'XXX')
            # print(wide_line[117])
            # 127 --源入湖物理文件名
            wide_line[126] = 'ACTVHH'
            # 128 --源入湖表名
            wide_line[127] = 'ACTVHH'
            # 129 --源系统
            wide_line[128] = 'SBS/SBSP'
            # 130 --源归属地编码
            wide_line[129] = actvhh[1]
            # 131 --源归属地
            wide_line[130] = org_dict.get(actvhh[1])

            # print(wide_line[119] + " " + wide_line[131])
            # 132 --源时间节点
            wide_line[131] = '20100615'
            # 133 --数据来源
            wide_line[132] = 'ODMS'
            # 134 -- 交易记录属性-一级-必须恢复：（对公“01”，对私“02”）
            wide_line[133] = '01'
            # 138 跨行标识
            wide_line[137] = '2'
            # 139 -- 交易动账标识-一级-必须恢复 TXNAMT
            if actvhh[15].replace(' ', '').strip()!= '0':
                wide_line[138] = '1'
            else:
                wide_line[138] = '0'
            # 140 系统时间
            # wide_line[139] = datetime.now().strftime('%Y%m%d%H%M%S')
            wide_line[139] = '20251031'
            ret = DELIMITER.join(wide_line)+DELIMITER
            print(ret)
            wide_table.append(ret)
            # print(wide_line)

    # with open(ACTVHH_DIR+"out", 'w', encoding='utf-8') as file:
        # file.writelines(wide_table)
    # print(wide_table)

    return


"""=================================宽表数据加工============================"""
# 输入宽表获取数据路径，输入宽表数据输出路径
def wide_processing_actvhh(input_path , output_path):
#   获取目录下所有文件
    files = input_path.iterdir()
    for file in files:
        # 跳过.xml配置文件
        if not file.is_file():
            continue
#       打开文件，获取文件记录
        records = []
        with open(file , 'r', encoding='utf-8') as f:
            records = f.readlines()[1:-1]
        # 定义宽表数据列表
        wide_lines = []
        if records:
            for record in records:
                actvhh = record.split('|')
                # 宽表记录 在这里做宽表映射、写文件、入库等
                wide_line = [''] * 140
                # 数据解析
                # 1 客户号 在ACTVHH表中第8个字段  CUSIDT
                wide_line[0] = '000000000'
                if actvhh[8]:
                    wide_line[0] = actvhh[8]
                # 2 账号 使用ACTVHH表中ORGID3(7),CUSIDT(8),APCODE(9),CURCDE(10) 这四个字段拼接而成
                wide_line[1] = actvhh[7] + actvhh[8] + actvhh[9] + actvhh[10]
                account = wide_line[1]
                # 3 旧帐号 存取2 中的内容
                wide_line[2] = account
                # 4 账号类型
                wide_line[3] = "01"
                # 5 查询卡号
                wide_line[4] = '00000'
                # 6 卡类型
                wide_line[5] = '99'
                # 7 机构号  orgidt
                wide_line[6] = actvhh[1]
                # 8 交易类型
                # 9 借贷标记  txnamt
                if int(actvhh[11]) <= 0:
                    wide_line[8] = 'D'
                else:
                    wide_line[8] = 'C'
                # 10 币种 curcde
                wide_line[9] = CurrencyDictionary.get(actvhh[10], 'XXX')
                # 11 交易金额
                wide_line[10] = f"{round(float(actvhh(11)), 2):.2f}"
                # 12 交易余额
                wide_line[11] = f"{round(float(actvhh(12)), 2):.2f}"
                # 设计个宽表大小5G输出文件，生成最终项目文件
                # 13 交易时间
                vchdat = actvhh[28]  # 日期串  yyyy-mm-dd
                vchtim = actvhh[29]  # 时间串  hh:mi:ss 或 BATCH/None
                # 1. 日期统一转成 yyyyMMdd
                date_part = datetime.strptime(vchdat, "%Y-%m-%d").strftime("%Y%m%d")
                # 2. 时间部分处理
                if vchtim is None or vchtim.upper() == 'BATCH':
                    time_part = '000000'
                else:
                    time_part = vchtim.replace(':', '')  # hh:mi:ss -> hhmiss
                # 3. 拼接
                wide_line[12] = date_part + time_part  # yyyyMMddhhmiss
                # 22 交易摘要 furinf
                wide_line[21] = actvhh[15]
                # 23 -- 交易网点名称-二级-尽可能恢复 txnbank ==  actorg
                wide_line[22] = bank_map.get(actvhh[23], '')
                # 24 -- 日志号-二级-尽可能恢复 VCHSET
                wide_line[23] = actvhh[3]
                # 35 -- 交易柜员号-二级-尽可能恢复 TLRNUM
                wide_line[34] = actvhh[2]
                # 37 -- 本方账号-二级-尽可能恢复vhh.orgid3,vhh.cusidt,vhh.apcode,vhh.curcde
                wide_line[36] = actvhh[7] + actvhh[8] + actvhh[9] + actvhh[10]
                # 46 -- 定存起始日期-三级-可为空 valdat
                val = actvhh[13]
                if val is None or (isinstance(val, str) and val.strip().upper() == 'NULL') or val == '':
                    wide_line[45] = ""  # 或 ''，根据你的需求
                else:
                    try:
                        # 尝试解析日期时间字符串
                        dt = datetime.strptime(val.strip(), '%Y-%m-%d %H:%M:%S')
                        wide_line[45] = dt.strftime('%Y-%m-%d')  # 转为 'YYYY-MM-DD'
                    except (ValueError, AttributeError, TypeError):
                        # 如果格式不对或不是字符串，保留原样或设为 None
                        wide_line[45] = ""
                # 86 -- 输入当天套顺序号 vchset
                wide_line[85] = actvhh[3]
                # 87 -- 输入当天套内顺序号 setseq
                wide_line[86] = actvhh[4]
                # 88 -- 记帐日 erydat
                wide_line[87] = actvhh[5]
                # 90 -- 建卡销卡凭证编号 regnum
                wide_line[49] = actvhh[22]
                # 91-- 传票输入方式 erytyp
                wide_line[90] = actvhh[27]
                # 117 交易本方核算码 apcode
                wide_line[116] = actvhh[9]
                # 118 -- 交易本方货币码-三级-可为空  curcde
                wide_line[117] = CurrencyDictionary.get(actvhh[10], 'XXX')
                # 127 --源入湖物理文件名
                wide_line[126] = 'ACTVHH'
                # 128 --源入湖表名
                wide_line[127] = 'ACTVHH'
                # 129 --源系统
                wide_line[118] = 'SBS/SBSP'
                # 130 --源归属地编码
                wide_line[119] = actvhh[14]
                # 131 --源归属地
                # 132 --源时间节点
                wide_line[131] = '20100615'
                # 133 --数据来源
                wide_line[132] = 'ODMS'
                # 134 -- 交易记录属性-一级-必须恢复：（对公“01”，对私“02”）
                wide_line[133] = '01'
                # 138 跨行标识
                wide_line[137] = '2'
                # 139 -- 交易动账标识-一级-必须恢复 TXNAMT
                if int(actvhh[15]) == 0:
                    wide_line[138] = '0'
                else:
                    wide_line[138] = '1'
                # 140 系统时间
                # wide_line[139] = datetime.now().strftime('%Y%m%d%H%M%S')
                wide_line[139] = '20251031'
#       添加分隔符 ， 添加到wide_lines
                wide_lines.append((DELIMITER.join(wide_line)+DELIMITER))
#     写入文件
#         设计文件输出路径和文件输出名
        with open(output_path, mode='w', encoding='utf-8') as f:
            f.writelines(wide_lines)


# 读取路径下所有 row 结尾的数据记录
# 对每条数据记录进行数据加工操作
# 输出数据

input_path = ''
output_path = ''

# 获取该文件目录下所有记录并且进行按照月份分类

def classify_by_month(input_path) :
    # 获取该路径下所有的文件并且获取有效记录
    for file in pathlib.Path(input_path).iterdir() :
        # 保存每个文件的记录数据
        lines  = []
        with open(file, mode='r', encoding='utf-8') as f:
            lines = f.readlines()



    return 0


def main():

    # actvhh_test()
    wide_processing_actvhh(input_path , output_path)
    return


if __name__ == "__main__":

    main()






















